#ifndef __UI_H
#define __UI_H

#include "main.h"
#include "ILI9341_GFX.h"
#include "ILI9341_STM32_Driver.h"
#include "stdio.h"
#include "ugui.h"



#define SCREEN_BORDER_COLOR BLACK       // 屏幕边框颜色
#define BACKGROUND_COLOR WHITE          // 屏幕底色
#define TEXT_COLOR BLACK                // 文本颜色
#define VALUE_COLOR WHITE               // 值颜色
#define RECTANGLE_COLOR 0xdfff          // 矩形颜色
#define SEPARATOR_COLOR BLUE          // 分割线颜色





#define RECTANGLE_X 10                  // 矩形左上角横坐标
#define RECTANGLE_WIDTH 100             // 矩形宽度
#define RECTANGLE_HEIGHT 30             // 矩形高度

#define VALUE_WIDTH     140             // 值宽度   
#define VALUE_HEIGHT    30              // 值高度


#define TEMP_MCU_Y 56                    // 芯片温度Y坐标
#define TEMP_AMB_Y 96                    // 环境温度Y坐标
#define HUM_Y 136                        // 环境湿度Y坐标   

#define SEPARATOR_X 120                  // 分割线横坐标    
#define SEPARATOR_Y_START 50             // 分割线起始Y坐标
#define SEPARATOR_Y_END 125              // 分割线结束Y坐标
#define SEPARATOR_WIDTH 5                // 分割线宽度

#define TEXT_X 12                         // 文本X坐标
#define VALUE_X 160                       // 值X坐标
#define VALUE_RECTANGLE_X 140             // 值矩形横坐标


#define FONT_SIZE_SMALL 2                 // 字体大小
#define FONT_SIZE_LARGE 3                 // 字体大小


/********************************************************************************/
// 温度阈值,湿度阈值,MCU温度阈值
#define TEMP_LOW_THRESHOLD 26
#define TEMP_MEDIUM_THRESHOLD 35
#define HUM_LOW_THRESHOLD 40
#define HUM_MEDIUM_THRESHOLD 50
#define MCU_TEMP_LOW_THRESHOLD 60
#define MCU_TEMP_MEDIUM_THRESHOLD 70
/********************************************************************************/





void ui_init(void); //初始化
void ui_draw_value_with_level(float value, int y, uint32_t low_color, uint32_t medium_color, uint32_t high_color, float low_threshold, float medium_threshold); //绘制带等级的数值
void ui_draw_value(float value, int y,uint32_t COLOR); //绘制数值




void ui_draw_page_one(float temperature, float humidity, float MCU_temperature); //绘制第一页
void ui_draw_page_two(float temperature, float humidity); //绘制第二页



UG_RESULT _HW_FillRrame(UG_S16 x1, UG_S16 y1, UG_S16 x2, UG_S16 y2, UG_COLOR c);
UG_RESULT _HW_DrawPoint(UG_S16 x, UG_S16 y, UG_COLOR c);
UG_RESULT _HW_DrawLine(UG_S16 x1, UG_S16 y1, UG_S16 x2, UG_S16 y2, UG_COLOR c);





#endif // !__UI_H
